#ifndef DATABASE_H
#define DATABASE_H

#include <QString>
#include <QSqlDatabase>
#include <QString>  // 在 database.h 中加
#include <QTime>



class Database {
    public:
        static bool initialize();  // 主线程中调用，用于创建文件
        static bool openConnectionForThread(); // 在每个线程中调用
        static bool addUser(const std::string &username, const std::string &hashedPassword);
        static bool validateUser(const std::string &username, const std::string &hashedPassword);
        // 记录上传文件与用户的绑定关系
        static bool recordFileOwner(const std::string &filename, const std::string &username, qint64 size);

        // static bool recordFileOwner(const std::string &filename, const std::string &username);
        // 根据用户名列出可下载文件
        static QStringList listFilesByUser(const std::string &username);
        static bool deleteFileRecord(const std::string &filename);
        // 判断用户是否为管理员
        static bool isAdmin(const std::string &username);
        // 改为：
        // static bool isAdmin(const QString &username);

        static bool addUserWithRole(const std::string &username, const std::string &password, const std::string &role);
        static bool userExists(const std::string &username);


        static QList<QMap<QString, QString>> listAllFiles();


    };

#endif // DATABASE_H


